|
|
Chris Huff wrote in message ...
> > > I would also use "weighted_normals" or "weight_normals" instead of
> > > "normal_weighted"
> > why ? this groups parameters for normal calculation ?
>
> You tell POV to weight the normals or to use weighted
> normals, not to use normals weighted.
Ok, thanks, I'll tell it to POV :-)
> your patch looks like it could be very fun just to play
> around with. :-)
I hope I do it not only for fun :-)
only with twist just imagine "airscrew", "drill"
> > what about deformations where they are good described only in part of
> > space ?
> > turbulence and twist is calculable in evry point but what about
> > placing along spline ?
>
> I'm not sure what exactly you mean...
I thought of your proposition and looked at the source of warps whole night and
finnaly I think there is big misunderstand, You Chris and Christoph Hormann
think that I deform point only ones but every deformation which I need must be
bi-directional/reversable/invertable
well defined deformation f(x,y,z) must have brather or sister as undeformation
g(x,y,z) where:
A=f(B) and B=g(A)
perhaps I don't understand warps source but I think this is hardly (if possible)
to inverse uniformly all warps
as I see twisting is bad example becouse is well defined for whole space and you
omit bi-directioning of calculation
I try explain again:
I start with patch becouse of bad normals in isosurface
I discover that normals of deformed object can be aproximated insted of
calculating
Here is symbolic notation of my method:
take depth1 and depth2 for container or bounding box
take function deform and undeform (opposite to deform)
for i=depth1 to depth2 step accuracy
point1=evaluate_ray(trace_ray,i)
point2=evaluate_ray(trace_ray,i+accuracy)
pointA=undeform(point1)
pointB=undeform(point2)
deformed_ray=create_ray_beetwen(pointA,pointB)
pointC=find_every_intersection(deformed_ray,base_object)
for every pointC beetween pointA and pointB
normal=normal(base_object,pointC)
array[normal_accuracy_int] = neighbouring points
around pointC
distributed evenly on surface
perpendicular to normal
point3=deform(pointC)
deformed_array=deform(each of neighbouring points)
calculate (weighted) normal from deformed neighbours
put on stack of intersections point3 and normal
end for
end for
is inverted function of turbulance and/or warps builded in povray
> If you want only part of the object to be deformed,
> you should probably use
> a union of a deform object with ordinary objects.
with wasting memory if this could be omited ?
I'll consider this behavior
> BTW, multiple deformations would also be useful...
yes, I though of it
> deform {
> box {<-1,-1,-1>, < 1, 1, 1> texture {Texture}}
> deformation {turbulence 0.2}
> deformation {twist y, 8}
> deformation {black_hole ...}
> accuracy 0.05
> normal_accuracy 3, 0.01
> weighted_normals on
> }
hmm, but parameters of accuracy should be defined for every deformation becouse
every type of deformations could have "density" of changing, "denisty" of
turbulencing
than perhaps
deform {
box {<-1,-1,-1>, < 1, 1, 1> texture {Texture}}
deformation {
turbulence 0.2
accuracy 0.1
weighted_normals on
}
deformation {
twist y, 8
accuracy 0.5
}
deformation {
black_hole ...
accuracy 0.01
normal_accuracy 10, 0.2
weighted_normals on
}
}
> Christopher James Huff
ABX with doughter at zuza.org
Post a reply to this message
|
|